This relates generally to computers and particularly to computer systems that include adjunct processors.
As used herein, an adjunct processor is anything, other than a central processing unit, used in conjunction with a central processing unit but attached to the system as a peripheral. Examples of adjunct processors include graphics processors, network interface cards and adapters, and Universal Serial Bus adapters, to mention a few examples.
Commonly, only a ring 0 software driver can submit a task to an adjunct processor by programming the memory mapped registers on the device. So when an application running on a system wants to assign a task to an adjunct processor, it must initiate a switch from ring 3 to ring 0 and then back again. These ring 0 to ring 3 transitions are expensive in terms of processor cycles.